import 'package:flutter/foundation.dart';

/// 日志级别枚举
enum LogLevel {
  debug,  // 仅开发环境显示
  info,   // 重要信息，开发和测试环境显示
  warning, // 警告信息，所有环境显示
  error   // 错误信息，所有环境显示
}

/// 日志工具类 - 用于控制日志输出
class Logger {
  // 是否为生产环境（通过环境变量或常量控制）
  static const bool _isProduction = bool.fromEnvironment('dart.vm.product');
  
  // 当前日志级别
  static LogLevel _currentLevel = _isProduction ? LogLevel.warning : LogLevel.debug;
  
  /// 设置日志级别
  static void setLogLevel(LogLevel level) {
    _currentLevel = level;
  }
  
  /// 调试日志 - 仅在非生产环境显示
  static void d(String tag, String message) {
    if (_shouldLog(LogLevel.debug)) {
      print('D/$tag: $message');
    }
  }
  
  /// 信息日志 - 重要信息
  static void i(String tag, String message) {
    if (_shouldLog(LogLevel.info)) {
      print('I/$tag: $message');
    }
  }
  
  /// 警告日志 - 所有环境都显示
  static void w(String tag, String message) {
    if (_shouldLog(LogLevel.warning)) {
      print('W/$tag: $message');
    }
  }
  
  /// 错误日志 - 所有环境都显示
  static void e(String tag, String message, {Exception? exception}) {
    if (_shouldLog(LogLevel.error)) {
      print('E/$tag: $message${exception != null ? '\n$exception' : ''}');
    }
  }
  
  /// 检查是否应该记录指定级别的日志
  static bool _shouldLog(LogLevel level) {
    if (_isProduction && level == LogLevel.debug) {
      return false;  // 生产环境不显示调试日志
    }
    return level.index >= _currentLevel.index;
  }
}